// 导入router所需的方法
import { createRouter, createWebHashHistory } from 'vue-router'
import { start, close} from "@/script/utils/nprogress";
// 导入路由页面的配置
import {routes} from './routes'
import { Session } from '@/utils/storage'
import { useMyStore } from '@/store/states'
import {ElNotification} from 'element-plus';
const whitePathList = ['/', '/login']
// 路由参数配置
const router = createRouter({
    // 使用hash(createWebHashHistory)模式，(createWebHistory是HTML5历史模式，支持SEO)
    history: createWebHashHistory(),
    routes: routes,
})
// 全局前置守卫，这里可以加入用户登录判断
router.beforeEach((to, from, next) => {
    start()
    if(to.meta.title){
        document.title = String(to.meta.title)
    }else document.title = 'wmin-demo'
    // 路由出错处理
    if(to.matched.length===0&&!to.name){
        ElNotification({
            title: '错误提示！',
            message: `【${to.fullPath}】路径找不到对应页面，默认切换到首页...`,
            type: 'error',
            duration: 3000
        })
        router.push('/home')
    }
    if(!Session.get('token')){
        if(!whitePathList.includes(to.path)){
            // next({ path: '/login', replace: true, query: to.query })
            next({ path: '/login'})
            return
        }
    } 
    // 继续前进 next()
    // 返回 false 以取消导航
    useMyStore().setIsLogin(true)
    next()
})
 
// 全局后置钩子，这里可以加入改变页面标题等操作
router.afterEach((to, from) => {
    const _title = to.meta.title
    if (_title) {
        window.document.title = String(_title)
    }
    close()
})
 
// 导出默认值
export default router